Public Member Functions | |
| __construct () | |
| showForm ($file_upload=false, $Buttons=0, $copyFile=null) | |
| printSubFolder ($fileID, $sql_add, &$folderArr, $COUNT=0, $layer="··") | |
| fileSizeOK ($size) | |
| fileExtOK ($name) | |
| sendEmail ($fileID, $toTeachers=false) | |
| resolveForm ($data) | |
Private Member Functions | |
| uploadFile ($data) | |
Private Attributes | |
| $maxFileSize | |
| $forbiddenFileExtensions | |
| $role = null | |
| $team = null | |
Definition at line 54 of file class.insertNotenliste.inc.php.
| PInsert::__construct | ( | ) |
Konstruktor. public
Definition at line 83 of file class.insertNotenliste.inc.php.
References $_SESSION.
00083 { 00084 global $settings; 00085 if (is_numeric($settings['filemanager_max_filesize'])) $this->maxFileSize = $settings['filemanager_max_filesize']; 00086 $this->forbiddenFileExtensions = $settings['filemanager_forbidden_extensions']; 00087 if (isset($_SESSION["roleID"])) { 00088 $this->role = new Role($_SESSION["roleID"]); 00089 } 00090 if (isset($_SESSION["teamID"])) { 00091 $this->team = new Team($_SESSION["teamID"]); 00092 } 00093 }
| PInsert::fileExtOK | ( | $ | name | ) |
Prüft ob der Dateityp laut Config-File erlaubt ist public
| string | $name - Dateiname |
Definition at line 203 of file class.insertNotenliste.inc.php.
Referenced by resolveForm().
00203 { 00204 if ($this->forbiddenFileExtensions) { 00205 $pos = strrpos($name, "."); 00206 if ($pos) { 00207 $ext = substr($name, $pos+1); 00208 if (is_array($this->forbiddenFileExtensions)) { 00209 foreach($this->forbiddenFileExtensions as $value) { 00210 if (strtolower($ext) == strtolower($value)) return false; 00211 } 00212 } elseif (strtolower($ext) == strtolower($this->forbiddenFileExtensions)) return false; 00213 } 00214 } 00215 return true; 00216 }
| PInsert::fileSizeOK | ( | $ | size | ) |
Prüft ob die Dateigröße dem Limit im Config-File entspricht public
| integer | $size - Größe der Datei |
Definition at line 190 of file class.insertNotenliste.inc.php.
Referenced by resolveForm().
| PInsert::printSubFolder | ( | $ | fileID, | |
| $ | sql_add, | |||
| &$ | folderArr, | |||
| $ | COUNT = 0, |
|||
| $ | layer = "··" | |||
| ) |
erstellt eine baumstrukur aller Ordner auf die der User Schreibrechte hat und die er sehen darf private
| ezsql | [$fileID] - | |
| string | [$sql_add] - SQL zusatz, ist Usergruppenabhaenigig | |
| array | [$folderArr] - Array der Ermittelten Folder, ist ein Zeiger der Uebergeben wird | |
| int | [$COUNT] - Ist der Array Zaehler von folderArr | |
| string | [$layer] - Sind die zeichen vorm Ordnernamen fuer visualisierung der baumstrukur |
Definition at line 174 of file class.insertNotenliste.inc.php.
References $_SESSION, and $db.
00174 { 00175 global $db; 00176 $folders = $db->get_results("SELECT fileID, link, student_write, userID FROM filelist WHERE parent_object='".$fileID."' AND courseID=".$_SESSION['course']." AND type='folder' $sql_add ORDER BY name"); 00177 if ($folders) foreach($folders as $folder) { 00178 $folderArr[$COUNT][0] = $layer." • ".Data::toHTML($folder->link, false); 00179 $folderArr[$COUNT++][1] = $folder->fileID; 00180 $COUNT = $this->printSubFolder($folder->fileID, $sql_add, $folderArr, $COUNT, $layer."··"); 00181 } 00182 return $COUNT; 00183 }
| PInsert::resolveForm | ( | $ | data | ) |
Wertet das Formular aus und traegt die Daten in die Datenbank ein public
| array | $data - Array mit dem Formulareintraegen |
Definition at line 263 of file class.insertNotenliste.inc.php.
References $_SESSION, $db, fileExtOK(), fileSizeOK(), sendEmail(), and uploadFile().
00263 { 00264 global $db, $EZSQL_ERROR; 00265 echo "<table>"; 00266 /************************************ FEHLERUEBERPRUEFUNG BEGIN***********************************************/ 00267 if ($data['link'] == "") { 00268 switch ($data['type']) { 00269 case 'ROOT': 00270 case 'folder': 00271 $ERROR = "Sie haben keinen Ordnernamen angegeben!"; 00272 break; 00273 00274 case 'link': 00275 $ERROR = "Sie haben keinen Link angegeben!"; 00276 break; 00277 00278 case 'file': 00279 $ERROR = "Sie haben keine Datei ausgewählt!"; 00280 break; 00281 } 00282 Output::errorMessage($ERROR, 2); 00283 } 00284 if ($data['name'] == "") { 00285 switch ($data['type']) { 00286 case 'ROOT': 00287 case 'folder': 00288 $ERROR = "Sie haben keinen erläuternden Ordnernamen (Tooltip) angegeben!"; 00289 break; 00290 00291 case 'link': 00292 $ERROR = "Sie haben keinen Namen für den Link angegeben!"; 00293 break; 00294 00295 case 'file': 00296 $ERROR = "Sie haben keinen Namen für die Datei angegeben!"; 00297 break; 00298 } 00299 if (!empty($ERROR)) Output::errorMessage($ERROR, 2); 00300 } 00301 if ($data['parent_object'] == "" && $data['type'] != 'ROOT') { 00302 $ERROR = "Sie haben keinen Zielordner ausgewählt!"; 00303 Output::errorMessage($ERROR, 2); 00304 } 00305 if ($data['type'] == 'link') { 00306 if (!Utilities::validateURL($data['link'])) { 00307 $ERROR = "Sie haben eine ungültige URL angegeben!"; 00308 Output::errorMessage($ERROR, 2); 00309 } 00310 if (strlen($data['name']) > 40) { 00311 $ERROR = "Linkname darf höchstens 40 Zeichen lang sein."; 00312 Output::errorMessage($ERROR, 2); 00313 } 00314 } 00315 if ($data['type'] == 'file') { 00316 if ($data['orig_filename'] == '' || strlen($data['extension']) > 5 || strlen($data['extension']) < 0) { 00317 $ERROR = "Keine Datei ausgewählt oder Dateiendung ungültig! (Länge hinter . 1-4)"; 00318 Output::errorMessage($ERROR, 2); 00319 if ($data['tmpfileTmpName'] != '') unlink($data['tmpfileTmpName']); 00320 } elseif (!($this->fileSizeOK($data['size']))) { 00321 $ERROR = "Datei ist entweder über der zulässigen Größe, oder sie ist leer!"; 00322 Output::errorMessage($ERROR, 2); 00323 if ($data['tmpfileTmpName'] != '') unlink($data['tmpfileTmpName']); 00324 } elseif (!($this->fileExtOK($data['orig_filename']))) { 00325 $ERROR = "Dateityp ist nicht erlaubt!"; 00326 Output::errorMessage($ERROR, 2); 00327 if ($data['tmpfileTmpName'] != '') unlink($data['tmpfileTmpName']); 00328 } 00329 } 00330 if ($data['type'] == 'folder') { 00331 if (strlen($data['link']) > 20) { 00332 $ERROR = "Ordnername darf höchstens 20 Zeichen lang sein."; 00333 Output::errorMessage($ERROR, 2); 00334 } 00335 } 00336 // Wenn bis hierher schon ein Fehler festgestellt wurde bricht er ab 00337 if (isset($ERROR)) { 00338 echo "</table>"; 00339 return false; 00340 } 00341 /************************************ FEHLERUEBERPRUEFUNG ENDE ***********************************************/ 00342 switch ($data['type']) { 00343 case 'ROOT': // Hauptordner anlegen 00344 $data['type'] = 'folder'; 00345 $data['parent_object'] = 0; 00346 $type = "von Hauptordner"; 00347 break; 00348 00349 case 'folder': // Unterordner anlegen 00350 $type = "von Ordner"; 00351 break; 00352 00353 case 'link': 00354 $type = "von Link"; 00355 break; 00356 00357 case 'file': 00358 $type = "von Datei"; 00359 break; 00360 } 00361 // Baut die SQL Abfrage anhand des Arrays data auf. 00362 // Alle Felder ohne "tmp" werden als FeldName benutzt und ihr Wert in die DB eingetragen 00363 $SQL_keys = $SQL_values = ''; 00364 foreach($data as $key => $value) { 00365 if (!strstr($key, "tmp")) { 00366 $SQL_keys.= $key.','; 00367 $SQL_values.= "'".Data::toMysql($value) ."',"; 00368 } 00369 } 00370 // Ordner existiert schon ?? 00371 if ($data['type'] == 'folder' && ($db->get_var("SELECT fileID FROM filelist WHERE parent_object='".$data['parent_object']."' AND courseID =".$data['courseID']." AND link='".$data['link']."' LIMIT 1") != "")) { 00372 Output::errorMessage("Ein Ordner mit dem selben Namen existiert schon in diesem Ordner.<br/>Wählen Sie bitte einen anderen Namen.", 2); 00373 echo "</table>"; 00374 return false; 00375 } 00376 // Selber Link schon in diesem Ordner vorhanden ?? 00377 if ($data['type'] == 'link' && $db->get_var("SELECT fileID FROM filelist WHERE parent_object='".$data['parent_object']."' AND courseID=".$_SESSION['course']." AND link='".$data['link']."' LIMIT 1") != "") { 00378 Output::errorMessage("Ein Link mit dem selben Namen existiert bereits in diesem Ordner!", 2); 00379 echo "</table>"; 00380 return false; 00381 } 00382 $SQL = "INSERT INTO filelist (".substr($SQL_keys, 0, -1) .") VALUES (".substr($SQL_values, 0, -1) .")"; // SQL Abfrage ohne Endene Kommas 00383 $errorCount = count($EZSQL_ERROR); 00384 $db->query($SQL); 00385 $data['fileID'] = $db->insert_id; 00386 if (count($EZSQL_ERROR) > $errorCount || $data['fileID'] < 0) { 00387 Output::errorMessage("Fehler beim Anlegen ".$type." in der Datenbank!"); 00388 echo "</table>"; 00389 return false; 00390 } elseif ($data['type'] == 'file') { 00391 if (!$this->uploadFile($data)) { 00392 $db->query("DELETE FROM filelist WHERE fileID='${data['fileID']}'"); 00393 $data['fileID'] = ""; 00394 Output::errorMessage("Aktion nicht erfolgreich durchgeführt!", 2); 00395 echo "</table>"; 00396 return false; 00397 } 00398 } 00399 if (isset($this->role)) { 00400 RoleArtefacts::setRoleForItem(RESSOURCE, $data["fileID"], $_SESSION["roleID"]); 00401 } 00402 if (isset($this->team)) { 00403 TeamArtefacts::setTeamForItem(RESSOURCE, $data["fileID"], $_SESSION["teamID"]); 00404 } 00405 if ($data['fileID'] && $data['visible_type'] != 1 && isset($data['tmpfileVisibleList'])) { 00406 // Spezielle UserSichtbarkeit in DB eintragen 00407 $errorCount = count($EZSQL_ERROR); 00408 foreach($data['tmpfileVisibleList'] as $value) { 00409 $db->query("INSERT INTO filevisible (fileID,userID) VALUES(".$data['fileID'].",".$value.")"); 00410 } 00411 if (count($EZSQL_ERROR) > $errorCount) { 00412 Output::errorMessage("Aktion nicht erfolgreich durchgeführt!", 2); 00413 echo "</table>"; 00414 return false; 00415 } 00416 } 00417 if ($data['type'] != 'file') { 00418 if ($data['tmpemail'] || $data['tmpteacherEMail']) { 00419 if ($this->sendEmail($data['fileID'], ($data['tmpteacherEMail'] && !$data['tmpemail']))) Output::echoMessage("Benachrichtigungs-Mails versandt.", 2); 00420 else Output::errorMessage("Benachrichtigungs-Mails konnten nicht versandt werden!", 2); 00421 } 00422 } 00423 Output::echoMessage("Aktion wurde erfolgreich durchgeführt!", 2); 00424 echo "</table>"; 00425 unset($_POST); 00426 if ($data['type'] == 'file') { 00427 // hochgeladene Datei indizieren 00428 $spider = new Spider(); 00429 $spider->start("add-file", $data['fileID']); 00430 } 00431 return $data["fileID"]; 00432 }
| PInsert::sendEmail | ( | $ | fileID, | |
| $ | toTeachers = false | |||
| ) |
Versendet die Benachrichtigungsmail für eine neue hochgeladene Datei. public
| integer | $fileID - die ID der hochgeladenen Datei | |
| bool | $toTeachers - ob die Emails nur an Dozenten geschickt werden sollen |
Definition at line 224 of file class.insertNotenliste.inc.php.
References $_SESSION, and $db.
Referenced by resolveForm(), and uploadFile().
00224 { 00225 global $db, $settings; 00226 if (!is_numeric($fileID)) return false; 00227 $file = $db->get_row("SELECT * FROM filelist WHERE fileID='$fileID'"); 00228 if ($file) { 00229 $email = new Email($_SESSION['userid']); 00230 if ($toTeachers) { 00231 if ($file->courseID == 0) { 00232 $query = "SELECT ID FROM user WHERE Usergroup=3"; 00233 } else { 00234 $query = "SELECT ID 00235 FROM user JOIN user_course ON ID=userID 00236 WHERE courseID='".$file->courseID."' AND 00237 ((differentUsergroup=0 AND Usergroup=3) OR differentUsergroup=3)"; 00238 } 00239 } else { 00240 if ($file->courseID == 0) { 00241 $query = "SELECT ID FROM user WHERE Invisible=0"; 00242 } else { 00243 $query = "SELECT userID FROM user_course WHERE courseID ='".$file->courseID."'"; 00244 } 00245 } 00246 $users = $db->get_col($query); 00247 if ($file->courseID > 0) { 00248 $courseName = $db->get_var("SELECT Name FROM courses WHERE ID='".$file->courseID."'"); 00249 } 00250 $user = $db->get_row("SELECT Vorname, Nachname FROM user WHERE ID='".$file->userID."'"); 00251 $subject = $settings["label"].": Neue Ressource im ".(empty($courseName) ? "Foyer" : "Kurs \"$courseName\""); 00252 $message = "Guten Tag,\n\n".$user->Vorname." ".$user->Nachname." hat ".($file->type == "link" ? "einen neuen Link" : ($file->type == "file" ? "eine neue Datei" : "einen neuen Ordner")) ." mit der Bezeichnung\n\n\t".$file->name.(empty($file->description) ? "" : "\n\n\t".$file->description) ."\n\nim ".(empty($courseName) ? "Foyer" : "Kurs \"$courseName\"") ." bereitgestellt".($file->type == "link" ? ":\n\n\t<".$file->link.">" : ".") ."\n\nViele Grüße,\n\nIhr Kursdozent"; 00253 return $email->sendMessageToUser($subject, $users, $message); 00254 } 00255 return false; 00256 }
| PInsert::showForm | ( | $ | file_upload = false, |
|
| $ | Buttons = 0, |
|||
| $ | copyFile = null | |||
| ) |
Generiert Formular für Insert public
Definition at line 99 of file class.insertNotenliste.inc.php.
References $_SESSION, and $db.
00099 { 00100 global $db, $EZSQL_ERROR; 00101 // Initialisierung 00102 $MaxFileSize = $this->maxFileSize; 00103 $ForbiddenFileExtensions = $this->forbiddenFileExtensions; 00104 $time = time(); 00105 $sql_add = ""; 00106 $heute = getdate(); 00107 $course = $_SESSION['course']; 00108 $form = new Formular(); 00109 // INITIALISIERUNG von Kalender Anzeige 00110 // DateSelection Objekt erzeugen und das heutige (start-) Datum einstellen 00111 $calendar = new DateSelection($heute['mday'], $heute['mon'], $heute['year'], $heute['hours'], $heute['minutes']); 00112 //Javascript deaktivieren 00113 $calendar->autoUpdate = false; 00114 //Name des Formulars einstellen 00115 $calendar->formName = "insert"; 00116 //Die Ausgabestrings löschen (keine Bezeichner vor den Auswahlfeldern) 00117 $calendar->clearStrings(); 00118 00119 // URL ins Feld einfügen und Radio Button vorselektieren, sofern übergeben 00120 if(isset($_GET['url'])) { 00121 $actionChecked = 'link'; 00122 $linkUrl = $_GET['url']; 00123 } 00124 else { 00125 $linkUrl = ''; 00126 $actionChecked = ''; 00127 } 00128 00129 // Link Name ins Feld einfügen, sofern übergeben 00130 if(isset($_GET['name'])) 00131 $linkName = $_GET['name']; 00132 else 00133 $linkName = ''; 00134 00135 // BEGIN von Formular erstellen 00136 // Init 00137 $form->setFormHead("insert", "", "post", "multipart/form-data", "onsubmit=\"".(!$file_upload ? "if (document.getElementById('link_ID').checked == false && document.getElementById('folder_ID').checked == false".(($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"]) ? " && document.getElementById('ROOT_ID').checked == false" : "") .") { alert('Bitte wählen Sie, ob Sie einen Link oder Ordner erstellen wollen!'); return false; } ": 00138 "") ."if (document.getElementById('folder').value == ''".(!$file_upload && (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"])) ? " && document.getElementById('ROOT_ID').checked == false" : "") .") { alert('Bitte wählen Sie einen Zielordner!'); return false; }\""); 00139 $form->setTemplate("<table>", "<tr valign='top'><td class='tableCell'>", "<td class='tableCell'>"); // Setzt die UmgebungsTags 00140 if($Buttons) 00141 $form->setButtons(2, "Upload", "Ignorieren"); //Setzt die Buttons 00142 else 00143 $form->setButtons(2, "Upload"); //Setzt die Buttons 00144 00145 if (isset($this->role)) { 00146 $form->addRawCode("<tr><td class='message' colspan='2'>Sie nehmen zur Zeit die Rolle <strong>".Data::toHTML($this->role->getName($_SESSION["gender"]), false) ."</strong> ein.<br />Wenn Sie ".($file_upload ? "eine Datei hochladen, wird diese" : "einen Ordner oder Link erstellen, wird dieser") ." unter Ihrem Rollennamen veröffentlicht.</td></tr>"); 00147 } 00148 // TrennZeile 00149 $form->addRawCode("<tr><td class='tableHead' colspan='2'>Benötigte Einstellungen</td></tr>"); // Fuegt eine Ueberschriftszeile ein 00150 // Wenn eine Datei hochgeladen werden soll 00151 if ($file_upload) { 00152 $form->addInput("hidden", "type", "", 1, "file"); 00153 $form->addInput("hidden", "MAX_FILE_SIZE", "", 1, $MaxFileSize*1024*1024); 00154 00155 $name = (!is_null($copyFile)) ? $copyFile->getName() : ""; 00156 $string = "Bitte wählen Sie eine CSV-Datei aus:<br/>"; 00157 $string.= "<span class='text10'>"; 00158 $string.= "</span>"; 00159 $form->addInput("file", "userfile", $string, 34); 00160 } 00161 $form->addButtons(); 00162 echo $form->getForm(1); 00163 }
| PInsert::uploadFile | ( | $ | data | ) | [private] |
Laed die Datei mit der fileID $fileID hoch
| array | [$data] Array mit den Formular-Eingaben |
Definition at line 440 of file class.insertNotenliste.inc.php.
References sendEmail().
Referenced by resolveForm().
00440 { 00441 global $settings; 00442 // Konstruktion des Uploadverzeichnis 00443 $uploaddir = PATH_TO_ROOT.$settings["upload_path"].'filemanager/courseID/'.$data['courseID'].'/'; 00444 // Verzeichnis anlegen wenn noch nicht vorhanden 00445 if (!(is_dir($uploaddir))) Utilities::mkdir_r($uploaddir); 00446 $uploadSuccess = false; 00447 // Datei wird hochgeladen 00448 if (isset($data['tmpfileTmpName'])) { 00449 $uploadSuccess = move_uploaded_file($data['tmpfileTmpName'], $uploaddir.$data['link']); 00450 } else if (isset($data['tmpPathToFile'])) { 00451 $uploadSuccess = copy( $data['tmpPathToFile'], $uploaddir.$data['link'] ); 00452 } 00453 if ( $uploadSuccess ) { 00454 if ($data['tmpemail'] || $data['tmpteacherEMail']) { 00455 if ($this->sendEmail($data['fileID'], ($data['tmpteacherEMail'] && !$data['tmpemail']))) Output::echoMessage("Benachrichtigungs-Mails versandt.", 1); 00456 else Output::errorMessage("Benachrichtigungs-Mails konnten nicht versandt werden!", 1); 00457 } 00458 Output::echoMessage("Datei erfolgreich gesendet", 1); 00459 return true; 00460 } else { 00461 Output::errorMessage("Fehler beim Senden der Datei aufgetreten!", 1); 00462 return false; 00463 } 00464 }
PInsert::$forbiddenFileExtensions [private] |
Verbotene Dateiendungen private array
Definition at line 66 of file class.insertNotenliste.inc.php.
PInsert::$maxFileSize [private] |
Die maximale Größe für hochgeladene Dateien. private integer
Definition at line 60 of file class.insertNotenliste.inc.php.
PInsert::$role = null [private] |
Rolle des aktuellen Benutzers, falls eine eingenommen wird. private object
Definition at line 72 of file class.insertNotenliste.inc.php.
PInsert::$team = null [private] |
Team des Benutzers private object
Definition at line 78 of file class.insertNotenliste.inc.php.
1.6.1